home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1991-94 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that the name of Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE
- * POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
- /*
- * Copyright (C) 1991 Silicon Graphics, Inc.
- *
- _______________________________________________________________________
- ______________ S I L I C O N G R A P H I C S I N C . ____________
- |
- | $Revision: 1.5 $
- |
- | Classes:
- | MyFloatCallbackList
- |
- | Author(s): David Mott
- |
- ______________ S I L I C O N G R A P H I C S I N C . ____________
- _______________________________________________________________________
- */
-
- #include "MyFloatCallbackList.h"
-
- typedef struct SoCallbackStruct {
- MyFloatCallbackListCB *func;
- void *userData;
- };
-
- //////////////////////////////////////////////////////////////////////////////
- //
- // Constructor
- //
- MyFloatCallbackList::MyFloatCallbackList()
- //
- //////////////////////////////////////////////////////////////////////////////
- {
- }
-
- //////////////////////////////////////////////////////////////////////////////
- //
- // Destructor
- //
- MyFloatCallbackList::~MyFloatCallbackList()
- //
- //////////////////////////////////////////////////////////////////////////////
- {
- int len = list.getLength();
-
- for (int i = 0; i < len; i++) {
- delete list[i];
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
- //
- // addCallback - adds the function f to the callback list, along with
- // userData. At invocation, f will be passed userData, along with callback
- // specific data.
- //
- void
- MyFloatCallbackList::addCallback(MyFloatCallbackListCB *f, void *userData)
- //
- //////////////////////////////////////////////////////////////////////////////
- {
- if (f == NULL)
- return;
-
- SoCallbackStruct *cb = new SoCallbackStruct;
- cb->func = f;
- cb->userData = userData;
-
- list.append(cb);
- }
-
- //////////////////////////////////////////////////////////////////////////////
- //
- // removeCallback - removes the function f associated with userData from the.
- // callback list.
- //
- void
- MyFloatCallbackList::removeCallback(MyFloatCallbackListCB *f, void *userData)
- //
- //////////////////////////////////////////////////////////////////////////////
- {
- int len = list.getLength();
- SoCallbackStruct *cb;
- int found = 0;
-
- for (int i = 0; (i < len) && (! found); i++) {
- cb = (SoCallbackStruct *) list[i];
- if ((cb->func == f) && (cb->userData == userData)) {
- list.remove(i);
- delete cb;
- found = 1;
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
- //
- // invokeCallbacks - invokes each callback func in the list, passing.
- // userData, and callbackData as the parameters.
- //
- void
- MyFloatCallbackList::invokeCallbacks(float callbackData)
- //
- //////////////////////////////////////////////////////////////////////////////
- {
- int len = list.getLength();
- SoCallbackStruct *cb;
-
- for (int i = 0; i < len; i++) {
- cb = (SoCallbackStruct *) list[i];
- (*cb->func) (cb->userData, callbackData);
- }
- }
-